package request

type CreatePlanRequest struct {
	Name      string `json:"name" gorm:"type:varchar(10);not null;comment:计划名称"`       // 计划名称
	StartTime string `json:"start_time" gorm:"type:varchar(10);not null;comment:开始时间"` // 开始时间
	EndTime   string `json:"end_time" gorm:"type:varchar(10);not null;comment:结束时间"`   // 结束时间
	ParentId  string `json:"parent_id" `                                               // 父计划的id
}

type IdRequest struct {
	Id string `json:"id"`
}

type EditPlanRequest struct {
	PlanId    string `json:"plan_id"`                                                  // 计划ID
	Name      string `json:"name" gorm:"type:varchar(10);not null;comment:计划名称"`       // 计划名称
	StartTime string `json:"start_time" gorm:"type:varchar(10);not null;comment:开始时间"` // 开始时间
	EndTime   string `json:"end_time" gorm:"type:varchar(10);not null;comment:结束时间"`   // 结束时间
	ParentId  string `json:"parent_id"`                                                // 父计划的id
}

type GetByPlanId struct {
	PlanID string `json:"plan_id" form:"plan_id"` // 主键ID
}

type EditTargetRequest struct {
	PlanID string `json:"plan_id" form:"plan_id"` // 主键ID
	Target string `json:"target" form:"target"`   // 目标内容
}

type PageInfo struct {
	Page     int `json:"page" form:"page"`         // 页码
	PageSize int `json:"pageSize" form:"pageSize"` // 每页大小
}

type SubmitPlanReportRequest struct {
	// 计划ID
	PlanId string `json:"plan_id"`
	// 计划名
	PlanName string `json:"plan_name"`
	// 报告完成时间
	FinishDate string `json:"finish_date"`
	// 是否超时
	IsOverTime int64 `json:"is_over_time"`
	// 预计计划时长(天为单位)
	ExpectDay int64 `json:"expect_day"`
	// 实际计划时长(天为单位)
	RealDay int64 `json:"real_day"`
	// 任务数
	TaskTotal int64 `json:"task_total"`
}

type CreateTaskRequest struct {
	Content     string `json:"content"`      // 待办内容
	ExecuteDate string `json:"execute_date"` // 执行日期
	Level       int    `json:"level"`        // 优先级（1-不重要且不紧急，2-紧急但不重要，3-重要但不紧急，4重要且紧急）
	PlanId      string `json:"plan_id"`      // 关联计划
}

type GetTaskListRequest struct {
	PlanId   string `json:"plan_id" form:"plan_id"`   // 计划ID
	Page     int    `json:"page" form:"page"`         // 页码
	PageSize int    `json:"pageSize" form:"pageSize"` // 每页大小
}

type EditTaskItemRequest struct {
	ID          string `json:"id" form:"id"` // 主键ID
	Content     string `json:"content"`      // 待办内容
	ExecuteDate string `json:"execute_date"` // 执行日期
	Level       int    `json:"level"`        // 优先级（1-不重要且不紧急，2-紧急但不重要，3-重要但不紧急，4重要且紧急）
	PlanId      string `json:"plan_id"`      // 关联计划ID
}

type QuestionRequest struct {
	// 问题集
	Questions []*QuestionItem
}

type QuestionItem struct {
	QuestionId string `gorm:"column:question_id;type:varchar(36);primary_key;comment:主键id" json:"question_id"`
	Question   string `gorm:"column:question;type:varchar(50);comment:问题;NOT NULL" json:"question"`
	Answer     string `gorm:"column:answer;type:text;comment:解答;NOT NULL" json:"answer"`
	PlanId     string `gorm:"column:plan_id;type:varchar(36);comment:计划id;NOT NULL" json:"plan_id"`
	UserId     string `gorm:"column:user_id;type:varchar(36);comment:用户id;NOT NULL" json:"user_id"`
	TaskDate   string `gorm:"column:task_date;type:varchar(10);comment:对应待办日期;NOT NULL" json:"task_date"`
}

type OneDayQuestionRequest struct {
	PlanId   string `json:"plan_id" form:"plan_id" binding:"required"`     // 计划ID
	TaskDate string `json:"task_date" form:"task_date" binding:"required"` // 待办日期
}

type SearchQuestionsRequest struct {
	PlanId  string `json:"plan_id" form:"plan_id" binding:"required"` // 计划ID
	Content string `json:"content"`                                   // 搜索内容
}

type GetOngoingTasksRequest struct {
	// 查询维度 today-今日；week-本周；all-全部
	Scope string `json:"scope" form:"scope" binding:"oneof=today week all"`
}
